package com.voxel.sense.infomsg.utils;

import android.Manifest;
import android.content.Context;

import pub.devrel.easypermissions.EasyPermissions;

/**
 * Created by chenyiyao on 2017/10/31.
 */

public class CheckPermission {
    /**
     * 检查是否具有所有的权限
     *
     * @param context Context
     * @return 是否有权限
     */
    public static boolean haveAll(Context context) {
        // 检查是否具有所有的权限
        boolean haveAll = haveNetworkPerm(context)
                && haveReadPerm(context)
                && haveWritePerm(context)
                && haveLocationPerm(context)
                && haveCameraPerm(context);
        // 如果没有则显示当前申请权限的界面
        return haveAll;
    }

    /**
     * 获取是否有网络权限
     *
     * @param context 上下文
     * @return True则有
     */
    public static boolean haveNetworkPerm(Context context) {
        // 准备需要检查的网络权限
        String[] perms = new String[]{
                Manifest.permission.INTERNET,
                Manifest.permission.ACCESS_NETWORK_STATE,
                Manifest.permission.ACCESS_WIFI_STATE,
        };

        return EasyPermissions.hasPermissions(context, perms);
    }

    /**
     * 获取是否有外部存储读取权限
     *
     * @param context 上下文
     * @return True则有
     */
    public static boolean haveReadPerm(Context context) {
        // 准备需要检查的读取权限
        String[] perms = new String[]{
                Manifest.permission.READ_EXTERNAL_STORAGE
        };

        return EasyPermissions.hasPermissions(context, perms);
    }

    /**
     * 获取是否有外部存储写入权限
     *
     * @param context 上下文
     * @return True则有
     */
    public static boolean haveWritePerm(Context context) {
        // 准备需要检查的写入权限
        String[] perms = new String[]{
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        };

        return EasyPermissions.hasPermissions(context, perms);
    }

    /**
     * @param context 上下文
     * @return True则有
     */
    public static boolean haveLocationPerm(Context context) {
        // 准备需要检查的定位权限
        String[] perms = new String[]{
                Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.ACCESS_FINE_LOCATION,
        };

        return EasyPermissions.hasPermissions(context, perms);
    }

    /**
     * 获取是摄像及录音权限
     *
     * @param context 上下文
     * @return True则有
     */
    public static boolean haveCameraPerm(Context context) {
        // 准备需要检查的定位权限
        String[] perms = new String[]{
                Manifest.permission.CAMERA,
                Manifest.permission.RECORD_AUDIO
        };

        return EasyPermissions.hasPermissions(context, perms);
    }

}
